# -*- coding: utf-8 -*-
import transaction
from Products.CMFCore.utils import getToolByName

PRODUCT_DEPENDENCIES = ('windowZ','CMFPublicator','PloneHelpCenter',
                        'PloneKeywordManager','PlonePopoll',
                        'TemplateFields','PythonField','TALESField',
                        'PloneFormGen','PloneFlashUpload',
                        'CMFPlacefulWorkflow',
                        'collective.portlet.feedmixer',
                        'tchezope.tema','PloneArticle',
                        'PloneZopista')
                        
EXTENSION_PROFILES = ('tchezope.politica:default',)

def install(self, reinstall=False):
    """Instala produtos e profiles. Um dos profiles é deste mesmo produto.
    Isto funciona porquê este script tem (Extensions/Install.py) tem 
    precedência sobre quaisquer profiles do mesmo produto.
    
    Isto teve que ser feito deste modo em função da impossibilidade 
    de instalar novos produtos durante a execução de um profile. Mesmo
    por um método importVarious de um eventual step adicional.s 
    """
    
    portal_quickinstaller = getToolByName(self, 'portal_quickinstaller')
    portal_setup = getToolByName(self, 'portal_setup')

    for product in PRODUCT_DEPENDENCIES:
        #print 'Instalando %s' % product
        if reinstall and portal_quickinstaller.isProductInstalled(product):
            portal_quickinstaller.reinstallProducts([product])
            transaction.savepoint()
        elif not portal_quickinstaller.isProductInstalled(product):
            portal_quickinstaller.installProduct(product)
            transaction.savepoint()
    
    for extension_id in EXTENSION_PROFILES:
        portal_setup.runAllImportStepsFromProfile('profile-%s' % extension_id, purge_old=False)
        product_name = extension_id.split(':')[0]
        portal_quickinstaller.notifyInstalled(product_name)
        transaction.savepoint()
